var fs = require('fs');

let filePath = './fs/hello.txt';

//同步读取

// let data;
// try{
//     data = fs.readFileSync('./fs/hello.txt');
//     console.log(`文件内容->${data}`);
// }catch (err){
//     console.log(`读取错误->${err}`);
// }

//异步读取

// fs.readFile(filePath,{},function (err , data) {
//     if(err){
//         console.log(`读取错误->${err}`);
//     }else{
//         console.log(`文件内容->${data}`);
//     }
// });

//文件流读取，适合大文件

// let readStream = fs.createReadStream(filePath);
//
// readStream.on('data', function (chunk) {
//     console.log('读取数据: ' + chunk);
// })
//     .on('error', function (err) {
//
//         console.log('出错: ' + err.message);
//     })
//     .on('end', function () {  // 没有数据了
//         console.log('没有数据了');
//     })
//     .on('close', function () {  // 已经关闭，不会再有事件抛出
//         console.log('已经关闭');
//     });


//文件同步写入

// try {
//     fs.writeFileSync(filePath, 'hello', {flag: 'a'});
//     console.log('写入成功');
// } catch (err) {
//     console.log(`文件写入失败${err}`);
// }

//文件异步写入

// fs.writeFile(filePath,'\r\nhello async',{flag:'a'},function (err) {
//     if(err){
//         console.log(`文件写入失败${err}`);
//     }else{
//         console.log('写入成功');
//     }
// });

//通过文件流写入, 适合大文件 flags

let writeStream = fs.createWriteStream(filePath,{flags:'a'});

writeStream.on('close',function(){
    console.log('已经关闭');
});

writeStream.write('\r\nhello write stream');
writeStream.end('');

//文件目录操作等请看
//  https://github.com/chyingp/nodejs-learning-guide/blob/master/%E6%A8%A1%E5%9D%97/fs.md